#include "surface_affichable.h"
#include "interface.h"

extern const char surface_invalide[] = "Surface invalide";

surface_affichable::surface_affichable(SDL_Surface *s, int nx, int ny, bool v, int nz) throw(erreur) : surface_graphique(nx, ny), z_(nz), surface_(s), visible_(v) {
	if(!s)
		throw une_erreur<surface_invalide>();
	
	module_interface::instance().inscrire(*this);
	module_interface::instance().demander_rafraichir();
}

surface_affichable::~surface_affichable() throw() {
	module_interface::instance().desinscrire(*this);
	SDL_FreeSurface(surface_);
}

void surface_affichable::z(int nz) {
	z_ = nz;
	module_interface::instance().changement_ordre();
}

void surface_affichable::x(int nx) {
	surface_graphique::x(nx);
	module_interface::instance().demander_rafraichir();
}

void surface_affichable::y(int ny) {
	surface_graphique::y(ny);
	module_interface::instance().demander_rafraichir();
}

void surface_affichable::visible(bool v) {
	visible_ = v;
	module_interface::instance().demander_rafraichir();
}
